#ifndef POSTAC_H
#define POSTAC_H

#include <iostream>


#define bmp1 "p1.bmp"
#define bmp2 "p2.bmp"
#define bmp3 "p3.bmp"
#define bmp4 "p4.bmp"
#define bmp5 "p5.bmp"
#define ilosc_bmp 5
#define rozdzielczoscX 800
#define rozdzielczoscY 600
#define odstep_od_krawedzi_pola_z_lewej 20
#define odstep_od_krawedzi_pola_z_prawej 65
#define bok_pola 85
#define rozmiar_X_tablicy_w_px 510
#define rozmiar_Y_tablicy_w_px 680

class postac
{
	private:
		int pozycja_x;
		int pozycja_y;
		long volatile* sptimer;
		BITMAP** ikony; // tablica bitmap potrzebnch do animacji postaci
		BITMAP* bufor; // bufor do wyświetlania
		BITMAP* bufor2; //bufor do trzymania aktualnego screena
		int energia; // zmienna ktra moze wykorzystam
		int zdrowie; // zmienna ktra moze wykorzystam
		void KtoraKlatka(volatile long frame); // przelicza zmiena z timera na konktretną klatke animacji postaci
														// ( wskazuje ktora bitmapa ma zostac wyswietlona i zapisuje tą wartośc do zmienej klatka
		void ruch(int x,int y,int frame); // przesuwa postac w miejsce kliknięcia.
		/* zwrucic trzeba uwagę ze ze postac rysuje się od miejsca kliknieca, czyli miejsce kliknięcia jest prawym górnym rogiem
		prostokątu który zostanie wyświetlony jako postać (bitmapa) */

	public:
		void pozycjaWtablicy(int x,int y);
		int klatka;  // przechowuje informacje ktora bitmapa powina zostac teraz wyswietlona
		postac(long volatile* TimerSpeed); // konstruktor

		virtual ~postac(); // destruktor
		bool zaladuj_bitmapy(const char* plik1,const char* plik2,const char* plik3,const char* plik4,const char* plik5);
		// laduje bitmapy z plikow do pamieci podrecznej, a konkretnie do wskaznikow BITMAP z allegro

		BITMAP* pokaz(int indeks);  // wzraca wskaznik do bitmapy o przechowywanej w tablicy o indeksie z parametru
		void rysuj(BITMAP* buffor);

		void rysuj(int frame); // rysuje odpowiednia bimtape uzalezniona od timera, w miejscu przechowywanym w zmienych
													// pozycja_x i pozycja_y.

		void rysuj(bool flag,int bmp); // rysuje konretną klatkę animacji postaci, pierwszy argument jest tylko po to żeby
																	// umozliwic przeladowanie funkcji, drugi to indeks bitmapy w tablicy, od 0 4.
		void rysuj(bool flag,int bmp,BITMAP* bufor);

		void RuchDyskretny(int x,int y,volatile long& opuznienie,BITMAP* main_bufor);/*przesuwa postac w kierunku miejsca w którym nastapiło klikniecie o zadane w wewnątrz
		ilosc pikseli, ktora ma odpowiadac wielkosci pola. Fuckcja rozpoznaje kierunek po wspułrzędnych myszy ktore trzeba podac
		jako parametry funckcji. Odpowiednio gdy w dół gdy klikniemy pozniżej postaci, w górę gdy powyzej, w lewo gdy z lewej
		strony od postaci i w prawo gdy klikniemy po prawo. Uwzględnic nalezy najpierw sprawdzane sa wartosc osi Y a puźniej
		wartosc osi X co oznacza że w sprzecznej sytuacji postac poryuszy zaleznie albo w górę albo w dół. */
		void RuchDyskretny(volatile long& opuznienie,BITMAP* buffor);

	//virtual void umiejetnosc_specjalna();
	//virtual void zmiana_pol();
	protected:

};

#endif // POSTAC_H
